Returns true
if the specified year is a leap year
Method:
In the Gregorian calendar, a normal year consists of 365 days. Because the actual length of a sidereal year (the time required for the Earth to revolve once about the Sun) is actually 365.25635 days, a "leap year" of 366 days is used once every four years to eliminate the error caused by three normal (but short) years. Any year that is evenly divisible by 4 is a leap year: for example, 1988, 1992, and 1996 are leap years. However, there is still a small error that must be accounted for. To eliminate this error, the Gregorian calendar stipulates that a year that is evenly divisible by 100 (for example, 1900) is a leap year only if it is also evenly divisible by 400. For this reason, the following years are not leap years: 1700, 1800, 1900, 2100, 2200, 2300, 2500, 2600 This is because they are evenly divisible by 100 but not by 400. The following years are leap years: 1600, 2000, 2400 This is because they are evenly divisible by both 100 and 400.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=short), | intent(in) | :: | year |
FUNCTION IsLeapYear & ! (year) & ! RESULT (isLeap) IMPLICIT NONE ! Arguments with intent(in): INTEGER (KIND = short), INTENT(IN) :: year ! Local variables: LOGICAL :: isLeap !------------end of declaration------------------------------------------------ IF ( MOD ( year, 4 ) == 0 ) THEN IF ( MOD ( year, 400) > 0 .AND. MOD ( year, 100) == 0 ) THEN isLeap = .FALSE. ELSE isLeap = .TRUE. END IF ELSE isLeap = .FALSE. END IF END FUNCTION IsLeapYear